Copyright: Copyright ® 1997 by J. Schlottke


TBarcode Help

TBarcode contains two most flexible barcode components for usage with Borlands Delphi-1 and -2 compiler. It comes with an low-level component and is compatible with Quickreports in the versions 1.0, 1.1 and 2.0 as well. All common barcodes types are supported.

About TBarcode

Ordering TBarcode

Download Updates

Installation

TBarcode and TQRBarcode components:

TBarcode component

TQRBarcode component

TBarcode and TQRBarcode properties:

Bar_Caption

Bar_CodeAddon

Bar_CodeType

Bar_FontName

Bar_FontScaling

Bar_HeightPercent

Bar_HighDensity

Bar_HumanReadable

Bar_ModuleWidth

Bar_PrintEmpty

Bar_Rotation

Bar_WidthReduce

Bar_ZoomSize

Code_License

Code_Version

TBarcode and TQRBarcode methods

CopyToClipboard

Create

Paint

Print

SaveToFile

SaveToFileEx

SetFrachtpostKundenNummerStellen

TBarcode and TQRBarcode events

TBarcode events ==> Same as TGraphicControl events

TQRBarcode events ==> Same as TQRDBText events


About TBarcode

TBarcode is copyright 1996 - 1997 by Juergen Schlottke Softwareentwicklung

Our postal address is:

Softwareentwicklung
Juergen Schlottke
Schoenaich-Carolath-Str. 46
D-25336 Elmshorn
Germany

Our fax number within Germany is:  04121 / 63971
Our telephone number is:  04121 / 63109

FAX number from outside Germany:  +49 4121 63971
International telephone number:  +49 4121 63109

Our Compuserve-ID is:

 100 106,3034

We can be reached by e-mail:

schlottke@compuserve.com

You can visit our web site at:

http://ourworld.compuserve.com/homepages/schlottke

Juergen Schlottke is a member of the German Shareware Authors Association named SAVE (Shareware-Autoren-Vereinigung). The SAVE Web server can be found at:

http://www.s-a-ve.com

SAVE Organization at Compuserve

If You are a Compuserve member and want to discuss shareware related problems with German shareware authors:

GO SAVEFORUM    or   GO DEUSHARE

Though the "default" language in this Compuserve forum is German, You can post Your questions in English. Almost every German shareware author will be able to answer Your questions in English.


Ordering TBarcode

You can order the registered and licensed version of TBarcode from almost any place in the world. You can pay by electronic funds transfer, postal money order, credit card or "Euro Cheque". Delivery is possible by e-mail or postal mail.

Even online registration by Compuserves SWREG service is possible. As a Compuserve member simply GO SWREG and select the registration number:

16-bit version for DELPHI-1:   Compuserve-SWREG #11747
32-bit version for DELPHI-2:   Compuserve-SWREG #11748

Please see below for details on single licenses and the site license.

For direct billing orders, please select an order form:

Order by CREDIT CARD (form in English language)

Order by funds transfer or postal money order

Bestellung mit Kreditkarte (Formular in Deutscher Sprache)

Bestellformular für Zahlung per Scheck oder Nachnahme

Registration and shipment takes place when we have received your payment and registration form. Credit card orders are shipped immediately after we have got the OK from the card service company.

Single License

A single license is either a 16-bit version for Delphi-1 or a 32-bit version for Delphi-2. You will receive a registered and licensed version by e-mail (or on diskette) that can be installed as a Delphi component. A single licensed version may be installed on one developer PC. You may distribute all Your compiled programs that make use of TBarcode. You don't need to pay any runtime fees, Tbarcode is a "royalty free" component. This includes all kinds of executable programs (EXE files) that You may develop and all distribution channels with the only restrictions as You can read below.

Site License (NEW)

A site license gives you the right to use TBarcode for as many developers as you have in your company at that location. And a site license includes the full source of the TBarcode and TQRBarcode components, including all the low-level barcode output routines in the files BARLL.PAS and BARHL.PAS.

Pricing: Everyone who orders five copies of TBarcode will automatically be registered with a site license and receive in addition:

1 	Licensed versions of TBarcode 16-bit (Delphi-1) and 32-bit (Delphi-2)

2 	Full source of the files BARLL.PAS and BARHL.PAS

3 	A "site license certificate" from J. Schlottke

To receive a "site license" for all developers in Your company including full source of all low-level barcode routines, just order 5 copies of TBarcode by Compuserve SWREG or by Credit Card order.

This offer is not limited to new customers. If You are already registered for  1 or 2 single licenses, You only have to pay the difference and will get a full site license. If You are registered and want to know more details for an "site license upgrade", please send an e-mail to: schlottke@compuserve.com

License Restrictions

You are not allowed to create any barcode programming tool or barcode component for Delphi programmers that is derived from one of the TBarcode components and sell it to programmers as if it were Your own work.

Free Updates

The latest shareware version of TBarcode can always be loaded from our Internet homepage.

http://ourworld.compuserve.com/homepages/schlottke

For a "free update" You can load the shareware version, unpack it and copy Your licensed resource file (BARCOD16.RES or BARCOD32.RES) over the same file of the shareware version. By doing this You can create Your own updated licensed version without any additional costs. This service is granted for at least one update from the date of purchase.


Order by CREDIT CARD
Order TBarcode by CREDIT CARD

Credit card orders are handled by this registration service company:

AJS Software
Anja Jurkat
Zum Bauverein 28
D - 45899 Gelsenkirchen
Germany

Fax  +49 209 955 20 23    (Only for CREDIT CARD order, no software support!)

Please fill in in the registration form below and fax or mail it to the address above.  Please use CAPITAL letters and do not use a red pen if you intend to fax it.

_________________          SAVE-REG Number  JSL_003
Date
___________________________________________________
Company Name
___________________________________________________
Contact Name
___________________________________________________
Postal Address
___________________________________________________
Zip Code/City/State
___________________________________________________
Country
________________________   ________________________
Telephone                             Fax
___________________________________________________
E-mail address

Please check with an (X) where applicable.

TBarcode, 16-bit version, single license  US$  99.-  ( )

TBarcode, 32-bit version, single license  US$  99.-  ( )

Deliver by:       Postal mail on diskette US$  10.-  ( )

                  E-mail (free)                0.-   ( )

I want ______ copy(s), total sum of order US$ __________

Billing is done in German Deutschmarks "DEM". As exchange
rates may vary, Your actual credit card debit in US$ may
be slightly different from the sum calculated above.

Payment by Credit Card:
MasterCard ( )     Eurocard   ( )     VISA  ( )
Diners     ( )     Am.Express ( )

______________________________________    ______________
Name of cardholder as printed on card     Expire date

______________________  ________________________________
Credit Card number      Signature of cardholder


Bestellformular Scheck Nachnahme
Order TBarcode by funds transfer

Please fill in the order form below and send to:

Software Development
Juergen Schlottke
Schoenaich-Carolath-Str. 46
D-25336 Elmshorn
Germany

I. Order for "Licensed Version of TBarcode":

TBarcode 16-bit version, single license  US$  99.-  ( )
TBarcode 32-bit version, single license  US$  99.-  ( )
TBarcode 16- & 32-bit, double license    US$ 169.-  ( )
TBarcode "Site-License" (full source!)   US$ 495.-  ( )
Please check with an (X) where applicable.

A site license includes full sources for 16- and 32-bit versions and gives you the right to use TBarcode for as many developers as you have in your company at that location.

II. Deliver by:

                 Postal mail on diskette US$  10.-  ( )
                 E-mail (free)                 0.-  ( )

Please add for total value of order:    US$  __________

III. Payment (Please check with an (X) where applicable):

Postal money order to adress above                  ( )
Funds transfer to bank account                      ( )
Name of Bank    :  Postbank Hamburg
Location of Bank:  22280 Hamburg, Germany
Account         :  Juergen Schlottke (address see above)
Account number  :  616 55 208

_________________          SAVE-REG Number  JSL_003
Date
___________________________________________________
Company Name
___________________________________________________
Contact Name
___________________________________________________
Postal Address
___________________________________________________
Zip Code/City/State
___________________________________________________
Country
________________________   ________________________
Telephone                             Fax
___________________________________________________
E-mail address
___________________________________________________
Signature

Registration and shipment takes place when we have received your payment and registration form. Cheques from foreign countries cannot be accepted. For credit card orders see "Order by Credit Card".


Order by CREDIT CARD
Bestellung mit Kreditkarte

Bestellungen per Kreditkarte bitte NUR über dieses Serviceunternehmen:

AJS Software
Anja Jurkat
Zum Bauverein 28
D - 45899 Gelsenkirchen
Germany

Fax  0209 / 955 20 23    (Nur für Faxbestellung, kein Softwaresupport!)

Bitte füllen Sie das nachfolgende Formular deutlich lesbar in Blockbuchstaben aus und senden oder faxen Sie es an die obenstehende Adresse.

_________________           SAVE-REG Nummer  JSL_003
Datum
___________________________________________________
Firmenname
___________________________________________________
Ansprechpartner
___________________________________________________
Strasse und Hausnr.
___________________________________________________
Postleitzahl / Ort
___________________________________________________
Land (falls nicht Deutschland)
________________________   ________________________
Telefon                              Fax
___________________________________________________
E-mail Addresse

Bitte nachfolgend mit (X) kennzeichnen, soweit gewünscht.

TBarcode, 16-Bit Version, einzelne Lizenz  DM 159.-  ( )

TBarcode, 32-Bit Version, einzelne Lizenz  DM 159.-  ( )

Lieferung:  Postversand Ausland (Europa)   DM  10.-  ( )
            Postversand Deutschland (frei)      0,-  ( )
            E-Mail (frei)                       0.-  ( )

Ich möchte ______ Stück, Gesamtpreis       DM __________

Bezahlung durch Kreditkarte:
MasterCard ( )     Eurocard   ( )     VISA  ( )
Diners     ( )     Am.Express ( )

______________________________________    ______________
Name des Inhabers (wie auf der Karte)     Ablaufdatum

______________________  ________________________________
Kartennummer            Unterschrift des Inhabers


Bestellformular Scheck Nachnahme

Bitte füllen Sie das Bestellformular deutlich lesbar
in Blockbuchstaben aus und senden Sie es an:

Softwareentwicklung
Jürgen Schlottke
Schönaich-Carolath-Str. 46
D-25336 Elmshorn

I. Bestellung der Delphi-Komponente "TBarcode" als Lizenzversion:

TBarcode 16-Bit-Version, Einzellizenz   159,-- DM  ( )
TBarcode 32-Bit-Version, Einzellizenz   159,-- DM  ( )
TBarcode Doppel-Lizenz (16- & 32-Bit)   270,30 DM  ( )
TBarcode "Site-License" (alle Sourcen!) 795,-- DM  ( )
Gewünschte Version bitte ankreuzen!

Die "Site-License" enthält beide Versionen (16-Bit & 32-Bit) und gilt für alle Entwickler-Arbeitsplätze eines Unternehmens unter derselben Adresse. Die Site-Lizense wird mit mit vollständigem Source-Code ausgeliefert.

II. Versandkosten und Zahlungsweise:

Vorkasse-Scheck innerhalb Deutschlands kostenfrei  ( )
Nachnahmelieferung (nur in Deutschland)  10,-- DM  ( )
Vorkasse mit Post-Baranweisung, Europa kostenfrei  ( )
Per EC-Euroscheck innerhalb Europas    kostenfrei  ( )

Aus dem Ausland werden ausschließlich "EC-Euroschecks"
akzeptiert, die in der Währung "DM" ausgestellt sind.

Die Lieferung gegen "offene Rechnung" ist nur an
inländische GROSSFIRMEN bei offizieller, schriftlicher
Bestellung durch die Einkaufsabteilung und nur nach
vorheriger Vereinbarung möglich. Versandkosten 10,-DM.

Gesamtpreis zusammenzählen und eintragen: _________  DM

V. Rechnungs- und Lieferanschrift:

Firma:      _______________________________________

Name:       _______________________________________

Straße:     _______________________________________

PLZ & Ort:  _______________________________________

e-Mail:     _______________________________________

Tel.& Fax:  _______________________________________

____________   	_______________________________________
  (Datum)      	             (Unterschrift)


Download Updates

A fully functional shareware version of TBarcode is always availabe for free download from my Internet Web Page at:

http://ourworld.compuserve.com/homepages/schlottke

Free updates for registered users:

If You have a licensed version of TBarcode, You have got a licensed resource file named BARCOD16.RES and/or BARCOD32.RES. Just copy this file from the licensed version over the same file that is contained in the shareware version. So easy as that: The shareware version has become Your free update!

Note: Though all updates since release 1.0 until now have been "free updates", this service may be cancelled some day without prior notification.


Installation

1 	Unpack TBarcodes ZIP-archive file with PKUNZIPs "-d" option to unpack with subdirectories or use a ZIP-extractor such as WINZIP, that unpacks and restores subdirectories by default..

2 	Install BARCODE.PAS found in the \VCL16 or \VCL32 directories, depending on which Delphi version you install into.

It is strongly recommended that You make a backup copy of Delphis component file before installing TBarcode. The filename of the default component file in Delphis \BIN directory is: COMPLIB.DCL (Delphi-1) or CMPLIB32.DCL. (Delphi-2)

By default, the TBarcode components are prepared to be installed with the original Quickreport version as shipped by Borland:

Delphi-1  ==> No Quickreports
Delphi-2  ==> Quickreport v1.0

But TBarcode can be used with all versions of Quickreports. Please have a look into the user definable section in file BARCODE.PAS to set a certain conditional define before installing the component file.

{.$define QR_V1}   ==> To install with Quickreports v1.0

{.$define QR_V11}  ==> To install with Quickreports v1.1

{.$define QR_V2}   ==> To install with Quickreports v2.0

By default these three lines are "commented out" because of the period before the dollar-sign, so Delphi will handle these lines as a comment. To force compilation for a definite version of Quickreport, remove the dot in only one of these lines, for example:

{$define QR_V2}   ==> To install with Quickreports v2.0

Now this line is a "define statement" and TBarcode will be able to compile and run with Quickreport v2.0. If the define statement is not set accordingly to the correct version of Quickreport, You might get an error message instead of an updated component library.

Component Installation for Delphi Beginners

•	Unzip TBarcodes ZIP file using PKUNZIPs -d option

•	Start Delphi

•	Choose Options | Install Components
(or if using Delphi-2:  Component | Install )

•	Click Add

•	Click Browse

•	Select file BARCODE.PAS in the \VCL16 or \VCL32 directory

•	Click OK

•	Click OK again

Delphi will now rebuild the library and add a "Schlottke" page on your component palette. If you experience any problems please look up the information given in the text above or have a loook at “Adding and Removing Components from the Library” in the Delphi online help.


TBarcode component

Unit

  BARCODE.PAS

Declaration

  TBarcode=class(TCustomBarcode)

Purpose

TBarcode is a low-level component for barcode output on any canvas. It is more flexible and powerful than the Quickreport version TQRBarcode, but cannot be used in Quickreports. TBarcode is able to handle "high density" barcodes which are half the size of normal barcodes and "module width reduction" which could be necessary with some types of printers.

Tasks

•	Use the Bar_Caption property to define the text of the barcode

•	Use the Bar_CodeType property to define the type of the barcode

•	Use the Bar_ModuleWidth property to set the width of the barcode

•	Use the Bar_HeightPercent property to set the height of the barcode

•	Use the "Print" method to put a barcode on any Delphi canvas

If You want perfectly constructed barcodes, set the Bar_ZoomSize property to "false" (default). If You want perfect scaling of barcodes, set Bar_ZoomSize to "true".

Properties

Bar_Caption

Bar_CodeAddon

Bar_CodeType

Bar_Fontname

Bar_FontScaling

Bar_HeightPercent

Bar_HighDensity

Bar_HumanReadable

Bar_ModuleWidth

Bar_Rotation

Bar_WidthReduce

Bar_ZoomSize

Code_License

Code_Version

... and all other properties from Delphis TGraphicControl

Events

All events from Delphis TGraphicControl

Methods

Print

Paint

SaveToFile

SaveToFileEx

CopyToClipboard

SetFrachtpostKundenNummerStellen

... and all other methods from Delphis TGraphicControl


Bar_Caption

Declaration

property Bar_Caption:string;

Applies to

TBarcode

TQRBarcode

Purpose

Bar_Caption holds the string with human readable text that is to be coded as barcode.

Value

Any string with a maximum length of 50 chars is allowed. If there are any characters in the string that have no representation in the char table of the actual barcode type, then the char "0" (Zero) will be coded instead. The digit "0" is contained in all types of barcodes.

Most barcode types will support digits only, i.e. all EAN-/UPC-Codes and Code 2of5. CODE39 allows upper case letters A-Z in addition and CODE128 allows all ASCII characters in the "B" code table. Please refer to the barcode type of Your choice for more details.

See also

Bar_CodeAddon

EAN_8

EAN_13

UPC_A

UPC_E

CODE39

CODE25i

CODE25iP

CODE128


TBarcode
TQRBarcode component

Unit

  BARCODE.PAS

Declaration

  TQRBarcode = class(TQRDBText)

Purpose

TQRBarcode is a high-level component for use in Quickreports and can be used for visually programming of reports that contain barcodes.

Tasks

•	Use the Bar_Caption property to define the text of the barcode

•	Use the Bar_CodeType property to define the type of the barcode

•	Use the Bar_ModuleWidth property to set the width of the barcode. With Quickreports v1.0 only two sizes are possible: Small (SC0..SC4) and Big (SC5..SC9) barcodes. With Quickreports v2.0 You can use ten different barcode sizes.

•	Use the Bar_HeightPercent property to set the height of the barcode

Properties

Bar_Caption

Bar_CodeAddon

Bar_CodeType

Bar_Fontname

Bar_FontScaling

Bar_HeightPercent

Bar_HumanReadable

Bar_ModuleWidth

Bar_PrintEmpty

Bar_Rotation

Code_License

Code_Version

... and all other properties from Quickreports TQRDBTExt

Note: Some of the extra properties that are from TQRDBText will have no effect on the barcode.

Events

OnPrint method is the same as with Quickreports TQRDBText

Methods

All methods from Quickreports TQRDBText


Bar_CodeAddon

Declaration

 property Bar_CodeAddon: string;

Applies to

TBarcode

TQRBarcode

Purpose

Bar_CodeAddon has only an effect on the barcode if it is an EAN-13 or UPC-A code. These codes allow special "addons".

Addon-2:  This is a two digit addon

Addon-2 is most common used for coding the issue number of magazines.

Addon-5: This is a five digit addon

Addon-5 is used to code a fixed price for books. The barcode before the addon is then usually an ISBN-number.

Value

The Addon-2 can be any two digit number from 00 to 99. If You set the property only a one digit number, then TBarcode will add one digit and show a valid Addon-2 code.

The Addon-5 can be any five digit number from 00000 to 99999. Any string with more than 2 characters will be represented as an Addon-5.

If the Bar_CodeType is not EAN-13 or UPC-A, the setting of the Bar_CodeAddon will have no effect on the barcode.

See also

Bar_Caption


Bar_CodeType

Declaration

property Bar_CodeType: btCodeTypes

Applies to

TBarcode

TQRBarcode

Purpose

Bar_CodeType controls the generation of different barcode types.

Value

The possible values are defined with the following type declaration:

type
 btCodeTypes=(EAN_8,EAN_13,UPC_A,UPC_E,
              CODE39,CODE25i,CODE25iP,
              CODE128_A,CODE128_B,CODE128_C);

Value        Meaning
-----------  -------------
EAN_8        Code EAN-8
EAN_13       Code EAN-13  (can have Addon-2 or Addon-5)
UPC_A        Code UPC-A   (can have Addon-2 or Addon-5)
UPC_E        Code UPC-E
CODE39       CODE39
CODE25i      Code 2of5 interleaved
CODE25iP     Code 2of5 for German "Frachtpost"
CODE128_A    Code 128, Table A
CODE128_B    Code 128, Table B
CODE128_C    Code 128, Table C

See also

Bar_Caption

Bar_CodeAddon

EAN_8

EAN_13

UPC_A

UPC_E

CODE39

CODE25i

CODE25iP

CODE128


EAN_8

European Article Numbering barcode. Allows 7 user digits plus an EAN check digit.

Charset: Only digits 0 to 9 are allowed.


EAN_13

European Article Number (EAN) 13 is a 13 digit representation of EAN. It is simular to the UPC-A barcode in height , width and number of bars. It does however allow a 13th digit to be encoded into the barcode by means of applying a parity pattern to the symbol.

The entire code comprises 12 user digits plus an EAN check digit. TBarcode will calculate the check digit automatically. The same guidelines that apply to UPC codes generally apply to the EAN codes.

Charset: Only digits 0 to 9 are allowed.


UPC_A

Universal Product Code (UPC) version A.  UPC is a coding system as well as a symbology, used to identify a product and its manufacturer. UPC-A is a fixed length numeric barcode which encodes 11 user digits plus a check digit.

Commonly used in the supermarket industry since 1973. UPC codes are used in the USA while in Europe EAN codes are in use for the same purposes.

Charset: Only digits 0 to 9 are allowed.


UPC_E

UPC Version E is a six digit variation of the UPC-A symbology. This barcode type often ist used on packages that would otherwise be too small to include an UPC-A symbol.

This is achieved by encoding the symbol in a special way that leaves
out some zeros that can occur in the UPC code. For example, code 12300-00045 would be encoded in a symbol as 123453, effectively eliminating half of the area that would otherwise be required for the symbol. The last digit of the six digit code dicates the type of compression used. Because of the data compression process, the version E symbol is referred to as a zero-suppressed symbol.

Charset: Only digits 0 to 9 are allowed.


CODE39

Code 39 was the first alphanumeric symbology to be developed. It can be used to code digits as well as all uppercase letters of the alphabet.

CODE39 is a variable length barcode that can contain up to 50 characters in this version of TBarcode. The symbol contains a start and stop character "*" and the barcode data. Each character in Code 39 contains five bars and four spaces.

Charset: Digits, letters and special chars

•	Digits 0 .. 9

•	Uppercase letters A .. Z

•	Special chars: Plus (+), Minus(-), Slash (/), Dot (.), $-Sign,  %-Sign, Space


CODE25i

Code 2of5 interleaved is a variable length, high density code containing the digits "0" through "9".

Because of the nature of coding Interleaved 2 of 5, data contained in the barcode must be an even number of digits. If the Bar_Caption property provides an odd number of digits, a proof digit is appended at the end, so the number of digits will always be even.


CODE25iP

Code 2of5 interleaved for the German "Frachtpost-Versand".

This special "Frachtpost"-version will show the following changes in comparison to the normal 2of5 interleaved code:

1 	A different calculation of the proof digit, if an odd number of digits is given.

2 	A special way of grouping the digits in the human readable text, but only if the resulting number has 12 or 14 digits.

This type of barcode is only used in Germany by "mass discount customers" of the "Deutsche Post AG" for preparing parcel address labels.


CODE128

CODE128 is a variable length barcode consisting of the full ASCII character set, as well a four non-data function codes. It was introduced in 1981 as a very high density alphanumeric symbology.

Code 128 has a symbol set of 106 different characters:

•	102 different printable characters

•	3 different start characters to indicate symbol set A, B or C

•	1 stop character

Each character can have one of three different meanings, depending on which of the three different symbol sets is choosen for the barcode. With TBarcode You can select "CODE128_A", "CODE128_B" or "CODE128_C" as Bar_Codetype..

The Bar_Caption will then be interpreted accordingly to the symbol set. In the Bar_Caption string You can use characters in the ASCII-range from ASCII-32 up to ASCII-134. The characters will be interpreted accordingly to the symbol set.

•	Choose CODE128_A if You want to code control chars and upercase letters

•	Choose CODE128_B if You want to code "full ASCII" (upper/lower case)

•	Choose CODE128_C if You want to code numeric data only

Character set "C" consists of the 100 two-digit pairs "00" through "99". This allows the effective density of Code 128 to be doubled thus reducing the barcodes total lenght when printing all numeric data.

This is the complete symbol table for CODE128:

Reference  Ascii   Code A   Code B   Code C

0           32     Space    Space    00
1           33     !        !        01
2           34     "        "        02
3           35     #        #        03
4           36     $        $        04
5           37     %        %        05
6           38     &        &        06
7           39     '        '        07
8           40     (        (        08
9           41     )        )        09
10          42     *        *        10
11          43     +        +        11
12          44     ,        ,        12
13          45     -        -        13
14          46     .        .        14
15          47     /        /        15
16          48     0        0        16
17          49     1        1        17
18          50     2        2        18
19          51     3        3        19
20          52     4        4        20
21          53     5        5        21
22          54     6        6        22
23          55     7        7        23
24          56     8        8        24
25          57     9        9        25
26          58     :        :        26
27          59     ;        ;        27
28          60     <        <        28
29          61     =        =        29
30          62     >        >        30
31          63     ?        ?        31
32          64     @        @        32
33          65     A        A        33
34          66     B        B        34
35          67     C        C        35
36          68     D        D        36
37          69     E        E        37
38          70     F        F        38
39          71     G        G        39
40          72     H        H        40
41          73     I        I        41
42          74     J        J        42
43          75     K        K        43
44          76     L        L        44
45          77     M        M        45
46          78     N        N        46
47          79     O        O        47
48          80     P        P        48
49          81     Q        Q        49
50          82     R        R        50
51          83     S        S        51
52          84     T        T        52
53          85     U        U        53
54          86     V        V        54
55          87     W        W        55
56          88     X        X        56
57          89     Y        Y        57
58          90     Z        Z        58
59          91     [        [        59
60          92     \        \        60
61          93     ]        ]        61
62          94     ^        ^        62
63          95     _        _        63
64          96     NUL      `        64
65          97     SOH      a        65
66          98     STX      b        66
67          99     ETX      c        67
68         100     EOT      d        68
69         101     ENQ      e        69
70         102     ACK      f        70
71         103     BEL      g        71
72         104     BS       h        72
73         105     HT       i        73
74         106     LF       j        74
75         107     VT       k        75
76         108     FF       l        76
77         109     CR       m        77
78         110     SO       n        78
79         111     SI       o        79
80         112     DLE      p        80
81         113     DC1      q        81
82         114     DC2      r        82
83         115     DC3      s        83
84         116     DC4      t        84
85         117     NAK      u        85
86         118     SYN      v        86
87         119     ETB      w        87
88         120     CAN      x        88
89         121     EM       y        89
90         122     SUB      z        90
91         123     ESC      {        91
92         124     FS       |        92
93         125     GS       }        93
94         126     RS       ~        94
95         127     US       DEL      95
96         128     FNC3     FNC3     96
97         129     FNC2     FNC2     97
98         130     SHIFT    SHIFT    98
99         131     Code C   Code C   99
100        132     Code B   FNC4     Code B
101        133     FNC4     Code A   Code A
102        134     FNC1     FNC1     FNC1
103         -	Start A
104         -	Start B
105         -	Start C
106         -	Stopzeichen


Bar_FontName

Declaration

property Bar_Fontname:String;

Applies to

TBarcode

TQRBarcode

Purpose

The font specified in "Bar_FontName" is used for the human readable text.

Value

Default value for Bar_Fontname is "Arial" as this font belongs to the Windows system. But You can select any other TrueType fontname as long as this font is properly installed in the system. With EAN- and UPC-Codes You would most likely want to use a font named "OCR-B", as the EAN-/UPC-specification encourages the use of this font for the human readable text.

Important: Please be sure that the fontname exists, otherwise You will get problems with the human readable text while rotating the barcode. Delphi will hold a complete list of fonts in the stringlists "Screen.Fonts" and "Printer.Fonts". Please use these lists to check that the desired fontname is already installed on the system.

See also

Bar_FontScaling


Bar_FontScaling
Declaration

property Bar_FontScaling: Integer;

Applies to

TBarcode

TQRBarcode

Purpose

Bar_FontScaling can be used to produce a bigger or smaller output of the human readable text.

Value

A value of "100" works perfect with the font "Arial" and all types of barcodes. To produce bigger letters, You can specify a value up to 200 percent of the normal size. To procude smaller letters You can go down to 20 percent.

See also

Bar_FontName


Bar_HeightPercent
Declaration

property Bar_HeightPercent:Integer;

Applies to

TBarcode

TQRBarcode

Purpose

Scaling the height of a barcode, width remains the same.

Value

A value of "100" will produce barcodes with "normal" height. To produce higher barcodes, You can specify a value up to 200 percent. To produce barcodes with a reduced height, You can specify a value down to 20 percent.

See also

Bar_ModuleWidth


Bar_ModuleWidth

Declaration

property Bar_ModuleWidth: btCodeSizes;

with:
btCodeSizes=(SC0,SC1,SC2,SC3,SC4,SC5,SC6,SC7,SC8,SC9);

Applies to

TBarcode

TQRBarcode

Purpose

Bar_ModuleWidth is used for scaling the width of a barcode.

Value

This scaling is done indirectly by "size numbers" that are based on the following table:

SC-Size    Module Width
             in [mm]
-------   -------------
  SC0        0,270
  SC1        0,297
  SC2        0,330   (normal size, default)
  SC3        0,363
  SC4        0,396
  SC5        0,445
  SC6        0,495
  SC7        0,544
  SC8        0,610
  SC9        0,660

Normally the output device has a resolution that is not able to produce modules that match exactly the specification ( resolution 1/1000 mm = 2540 dpi). So if the resolution of Your device is much less than 2540 dpi, TBarcode will probably not be able to produce barcodes of 10 different sizes. So with low resolution devices (all below 2540 dpi) You have two possibilities:

1 	Round the single module width to a width, that can be produced by the output device. This will lead to mathematical perfect barcodes, but You cannot use ten different sizes. On a screen You can have only two different sizes as all module widhts from the table above are rounded to 0,270mm or 0,544mm. This is one module equals 1 Pixel or 2 pixels. So on a screen, one module is always 1 or 2 pixels wide, otherwise You will get no perfect barcode.

2 	Round the output positions of the single barcode modules. This will lead to barcodes that are not perfectly constructed, but You are able to see all 10 different barcode sizes, even on the screen. When used on a printer, the readability of the barcodes might be reduced, if the printer resolution is not high enough.

With the low-level component TBarcode You are free of choice: If You set property Bar_ZoomSize:=false, You will get perfect barcodes (case 1). If You set property Bar_ZoomSize:=true, You will get perfect scaling (case 2).

The Quickreport component leaves You no choice. You will always have perfect WYSIWYG scaling with TQRBarcode (case 2). But the number of barcode sizes is dependent on Your Quickreport version:

Quickreport v1.0  ==>  2 different barcode sizes
Quickreport v2.0  ==> 10 different barcode sizes

See also

Bar_HighDensity

Bar_WidthReduce

Bar_ZoomSize


Bar_HighDensity

Declaration

property Bar_HighDensity:Boolean

Applies to

TBarcode

Purpose

This property is used to print high density barcodes which are only half the normal size as defined in Bar_ModuleWidth. If You want to see the scaling of barcodes with Bar_HighDensity=true on screen, You must set Bar_ZomSize:=true as well.

But You always should set Bar_ZomSize:=false while printing high density barcodes, because otherwise the resulting printer output might be unreadable when scanning the barcode.

Hint: Some barcode scanners are not able to scan high density barcodes. So before printing and using them, please confirm that the user of the barcodes is able to read them with his barcode hardware equipment.


Bar_WidthReduce

Declaration

  property Bar_WidthReduce:Boolean

Applies to

TBarcode

Purpose

With some type of printers the black lines in a barcode will print a little bit wider than they should be. I.e. when You do inkjet printing, the ink could bleed out from a black bar into the white bars surrounding them. So the black bars will become wider and the white bars smaller than they should be.

If You set "Bar_Widthreduce:=True", all black bars are to be printed one device unit smaller than the white gaps of the same width. In some cases this will lead to perfect barcodes with inkjet printers. But no guarantee on that.

The same effect (black bars print too wide) could happen with dot matrix printers. Reason: The pins of a dot matrix printer are most likely of a diameter near 0.160 mm. And such printers pretend to print with a 360dpi resolution, that is one dot every 0.07mm. So if You want to print a line of 0.07mm width, the printer would produce a line of 0.160mm width. This little difference would make a barcode unreadable, so try "Bar_Widthreduce:=true" if this happens with Your dot matrix printer while printing barcodes. It is known, that WIN/95 drivers for dot matrix printers fix this problem in the printer driver. So You have to try out, which setting is the best for barcode printing with dot matrix printers.

Note: You always should use a laser printer for barcode printing! A laser printer will always print the best possible barcodes with maximum readability. The correct setting for all types of laser printers is "Bar_Widthreduce:=False".

The Bar_WidthReduce feature is not available with the Quickreport version of TBarcode.

Values

Bar_WidthReduce:=false;  ==> default, no reduction of black bars

Bar_WidthReduce:=true;  ==> reduce black bars by one device unit


Bar_ZoomSize

Declaration

  property Bar_ZoomSize:Boolean

Applies to

TBarcode

Purpose

With the low-level barcode component TBarcode You are free of choice whether You want:

1 	Best readability of printed barcodes, mathematically correct constructed

2 	Best WYSIWYG scaling of barcodes in 10 different sizes

Every output device has a limited resolution and each barcode consists of a certain number of bar 'modules' that must be printed to the output device. The number of modules in an UPC-A-code is 95. So You need 95 device units to print the smallest possible barcode that is mathematically correct constructed.

And if this resolution is less than 2540 dpi, You have a problem:

As descibed above You can't get barcodes of a fixed size, if the output device has a limited resolution. And all devices have a limited resolution, so there is a limited number of possible sizes with each device, that produce "exact" barcodes.

Lets calculate: A EAN-13-Barcode constists of 95 modules. On the screen (resolution 96dpi) a barcode that uses one pixel per module will produce (nearly) a one inch barcode. If the width of a module would be two pixel, the barcode would be 95 modules * 2 Pixels =190 Pixels wide, that is nearly 2 inches. There is no possibility to show an exact EAN-13 on screen, that is of another size than 95 or 190 pixels wide!

If You don't need exact constructed barcodes on screen, You can set "Bar_ZoomSize:=true". But while printing You always should use the setting Bar_ZoomSize:=false". Only this setting will guarantee optimal readable barcodes!

The scaling of high density barcodes (Bar_HighDensity=true) is only visible on screen if You set Bar_ZoomSize:=true as well.

The Bar_ZoomSize feature is not available with the Quickrepot version of TBarcode.

Value

Bar_ZoomSize:=true;  ==> Fit module width to device units, best readability

Bar_ZoomSize:=false; ==> Fit barcode size, best WYSIWYG scaling


Bar_HumanReadable

Declaration

property Bar_HumanReadable:Boolean

Applies to

TBarcode

TQRBarcode

Purpose

Barcodes can be printed with or without a human readable text.

Value

Bar_HumanReadable:=true;   ==> Print barcode with human readable text.

Bar_HumanReadable:=false;   ==> Print barcode without human readable text.


Bar_PrintEmpty

Declaration

  property Bar_PrintEmpty: Boolean

Applies to

TQRBarcode

Purpose

If the Bar_Caption property contains an empty string, this property decides whether the barcode is to be printed as "empty barcode" or if nothing should be printed.

Value

PrintEmpty:=true   ==> Print an empty barcode if Bar_Caption is empty'

PrintEmpty:=false  ==> Print nothing if Bar_Caption is empty.


Bar_Rotation

Declaration

property Bar_Rotation: btCodeRotate

with
type btCodeRotate=(rotate_000,rotate_090,rotate_180,rotate_270);

Applies to

TBarcode

TQRBarcode

Purpose

Rotate barcodes in steps of 90 degrees.

Value

rotate_000  ==> Print barcode from left to right

rotate_090 ==> Print barcode from bottom to top

rotate_180 ==> Print barcode upside down

rotate_270 ==> Print barcode from top to bottom


Code_License

Declaration

Property Code_License:string;     {This is a readonly property}

Applies to

TBarcode

TQRBarcode

Purpose

The Code_License property shows, whether You are working with the licensed version or with the shareware version of TBarcode.

Value

If the shareware version is active, the string reads "Not registered". Otherwise You will see Your license string.

See also

Code_Version


Code_Version

Declaration

Property Code_Version:string;     {This is a readonly property}

Applies to

TQRBarcode

Purpose

The Code_Version shows You the actual version of TBarcode.

Value

Version number of TBarcode as string.

See also

Code_License


Print

Declaration

TBarcode ==> procedure Print(MyCanvas:TCanvas;x,y:Integer;Point:PPoint);

TQRBarcode ==>  procedure Print(X,Y : Integer);

Applies to

TBarcode

TQRBarcode

Purpose

The "print" method is used with a TBarcode object for barcode output on a Delphi canvas, while it is an internal method with a TQRBarcode.

Example

Procedure PrintDemo;
var
  mybarcode:TBarcode;
begin
  {Create TBarcode object on the fly}
  MyBarcode:=TBarcode.create(self);
  MyBarcode.Bar_Codetype:=EAN_8;
  MyBarcode.Bar_caption:='12345';
  MyBarcode.Bar_Modulewidth:=SC2;
  Printer.begindoc;
    MyBarcode.Print(Printer.canvas,200,200,nil);
  Printer.enddoc;
  MyBarcode.free;
end;


Paint
Declaration

  procedure Paint;override;

Applies to

TBarcode

TQRBarcode

Purpose

Normally not needed in applications. For internal use only. For more details see:

TBarcode.Print ==> TGraphicControl.Print
TQRBarcode.Print ==> TQRDBText.Print


SaveToFile

Declaration

   procedure SaveToFile(BorderWidth:Integer;Filename:string);

Applies to

TBarcode

Purpose

Calling the procedure "SaveToFile" is an easy way to store a barcode in a graphics file format. The parameter "BorderWidth" specifies the width of a white frame around the barcode, and "Filename" is the name of a file where to store the  barcode. The resulting file is a BMP bitmap file.

See also

SaveToFileEx


SaveToFileEx

Declaration

procedure SaveToFileEx(BorderWidth:Integer;Filename:string;
                                    monochrome:boolean;MagnifyBy:Integer);

Applies to

TBarcode

Purpose

The procedure "SaveToFileEx" is the extended version of "SaveToFile". This extended procedure allows two more parameters for more flexibility:

monochrome:=true;  ==> Save a monochrome BMP file
                       (Will produce very small files)

monochrome:=false; ==> Save a color BMP file
                       (But bars will still remain black)

The "MagnifyBy" parameter is used to save oversized bitmaps. The resulting files can easily be used by DTP-Software (i.e. MS-Publisher). The problem with normal sized bitmaps is, that the text scaling is adapted to the screen resolution. When using a fit-to-screen-sized bitmap in a publisher software, You will get a very ugly printer output: the text will become rasterized and show ugly stairs in it.

So You better save a bitmap with the "MagnifyBy" factor set to 10 and then set the graphics scaling to 10% of the original in Your MS-Publisher (or what else You are using as a DTP software). When printing this barcode picture with Your MS-Publisher, You will get a perfectly scaled human readable text with the barcode.

The resulting file is in the BMP file fomat.

Example

  Barcode1.SaveToFileEx(5,savedialog1.filename,true,10);

See also

SaveToFile


CopyToClipBoard

Declaration

  procedure CopyToClipboard(BorderWidth:Integer);

Applies to

TBarcode

Purpose

Copy a barcode into the windows clipboard in the cf_bitmap format.

Example

procedure TForm1.Copy2Clipboard;
{Copy the barcode to clipboard}
begin
  {Leave 10 Pixels white frame around barcode}
  Barcode1.CopyToClipboard(10);
  showmessage('Barcode graphic is now in the clipboard');
end;


SetFrachtpostKundenNummerStellen

Declaration

  procedure SetFrachtpostKundenNummerStellen(Anzahl:Integer);

Applies to

TBarcode

Purpose

This procedure is only needed with the "German Frachtpost" barcode CODE25iP. This barcode has a special digit grouping in the human readable text. It is based on the number of digits in the "Kundennummer", which can be in the range from 4 to 7 digits.

Example

SetFrachtpostKundenNummerStellen(7);


Create
procedure Create

Declaration

  constructor Create(AOwner: TComponent);override;